<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Javascript函数-作用域</title>
</head>

<body>
    <script>
        /**
         * ES5的作用域分为：全局作用域（Global）；局部作用域（Local），又称为函数级作用域
         * ES6的作用域分为：
         * 全局作用域（Global）；通常Window对象代指全局作用域，全局作用域下通过var声明的变量都会挂载到window下边。
         * Script作用域本身也是一种块级作用域。
         * 块级作用域（Block）；块级作用域通常由一对花括号“{}”声明，这里除了对象的花括号，而在ES6中通过let，const声明的变量只能在声明它们的那个块级作用域下被访问。
         * 有点特别的是通过let，const声明的全局变量不会挂载到window下边，而是会放到Script作用域中，我的理解是Script
         * 作用域是为了区别普通的块级作用域而创造的全局块级作用域，
         * 函数级作用域（Local）：函数内部产生的作用域。
         *  
         **/
        let text1 = '111';
        console.log(text1)

        function test() {
            let text2 = '222';
            console.log(text2)
        }
        test();
        if (true) {
            let text3 = '333';
            console.log(text3)
        }
    </script>
</body>

</html>